using System;
using System.IO;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("ShareableDeck")]
	public class ShareableDeck : MonoClass
	{
		public static int VERSION_NUMBER_ZERO => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "VERSION_NUMBER_ZERO");

		public static int VERSION_NUMBER_ONE => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "VERSION_NUMBER_ONE");

		public static int VERSION_NUMBER_CURRENT => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "VERSION_NUMBER_CURRENT");

		public static string CommentLinePrefix => MonoClass.smethod_8(TritonHs.MainAssemblyPath, "", "ShareableDeck", "CommentLinePrefix");

		public static string DeckNameLinePrefix => MonoClass.smethod_8(TritonHs.MainAssemblyPath, "", "ShareableDeck", "DeckNameLinePrefix");

		public int VersionNumber => method_11<int>("get_VersionNumber", Array.Empty<object>());

		public string DeckName => method_13("get_DeckName");

		public int HeroCardDbId => method_11<int>("get_HeroCardDbId", Array.Empty<object>());

		public bool IsArenaDeck => method_11<bool>("get_IsArenaDeck", Array.Empty<object>());

		public ShareableDeck(IntPtr address, string className)
			: base(address, className)
		{
		}

		public ShareableDeck(IntPtr address)
			: this(address, "ShareableDeck")
		{
		}

		public static ShareableDeck DeserializeFromClipboard()
		{
			return MonoClass.smethod_15<ShareableDeck>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "DeserializeFromClipboard", Array.Empty<object>());
		}

		public static ShareableDeck Deserialize(string pastedString)
		{
			return MonoClass.smethod_15<ShareableDeck>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "Deserialize", new object[1] { pastedString });
		}

		public static bool IsValidEncodedDeckHeader(Stream stream)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "ShareableDeck", "IsValidEncodedDeckHeader", new object[1] { stream });
		}

		public string Serialize(bool includeComments)
		{
			return method_13("Serialize", includeComments);
		}

		public string SerializeToVersion(int versionNumber)
		{
			return method_13("SerializeToVersion", versionNumber);
		}

		public string SerializeToVersion_0()
		{
			return method_13("SerializeToVersion_0");
		}

		public string SerializeToVersion_1()
		{
			return method_13("SerializeToVersion_1");
		}

		public int GetCardCountInDeck()
		{
			return method_11<int>("GetCardCountInDeck", Array.Empty<object>());
		}

		public new bool Equals(object obj)
		{
			return method_11<bool>("Equals", new object[1] { obj });
		}

		public new int GetHashCode()
		{
			return method_11<int>("GetHashCode", Array.Empty<object>());
		}

		public string GetDeckStringWithComments(string encodedDeck)
		{
			return method_13("GetDeckStringWithComments", encodedDeck);
		}
	}
}
